home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 22 / CU Amiga Magazine's Super CD-ROM 22 (1998)(EMAP Images)(GB)[!][issue 1998-05].iso / PowerPC / Programming / PPCsiod / SIOD / Delay.scm < prev    next >
Encoding:
Text File  |  1993-07-09  |  658 b   |  24 lines

  1. (macro freeze (lambda (x)
  2.                       (cons 'lambda 
  3.                             (cons nil (cdr x)))))
  4.  
  5. (define (thaw x) (x))
  6.  
  7. (macro delay (lambda (x)
  8.                  (list 'cons ''delayed-object
  9.                        (list 'lambda 
  10.                                    '() (cadr x)))))
  11.  
  12. (define (force x) 
  13.         (if (eq? (car x) 'memoized-object)
  14.             (cdr x) 
  15.             (sequence (set-cdr! x ((cdr x)))
  16.                       (set-car! x 'memoized-object)
  17.                       (cdr x))))
  18.  
  19. (define (delayed-object? x)
  20.         (if (pair? x)
  21.             (or (eq? (car x) 'delayed-object)(eq? (car x) 'memoized-object))
  22.             #f))
  23.  
  24.